#ifndef XDEFS_H
#define XDEFS_H
#include <memory>

class XToken;
class XTokenBoolean;
class XTokenInteger;
class XTokenFloat;
class XTokenString;
class XTokenVariable;
class XTokenKeyword;
class XTokenPunctuator;

class XItem;
class XItemVisitor;
class XItemUndefined;
class XItemBoolean;
class XItemString;
class XItemInt32;
class XItemInt64;
class XItemFloat;
class XItemDouble;
class XItemList;
class XItemDict;
class XItemToken;

class XAbstractSyntaxTree;
class XAbstractSyntaxTreeVisitor;
class XAbstractSyntaxTreeBuilder;

class XScriptExecutor;

class XVariableTable;
class XStateBuilder;

class XContext;
class XModule;

using XTokenPtr = std::shared_ptr<XToken>;
using XItemPtr = std::shared_ptr<XItem>;
using XAbstractSyntaxTreePtr = std::shared_ptr<XAbstractSyntaxTree>;

#endif // XDEFS_H
